package service;

import pojo.Article;

import java.util.List;

/**
 * 用户帖子接口
 */
public interface IArticleService {
    /**
     * 通过id获取帖子信息
     * @param id
     * @return
     */
    Article getArticleById(int id);

    /**
     * 通过userId获取用户发的帖子
     * @param userId
     * @return
     */
    List<Article> getArticlesByUserId(int userId);


    /**
     * 添加一个贴子
     * @param article
     * @return
     */
    int addArticle(Article article);

    List<Article> getArticlesByTop(int pageSize);

    List<Article> getArticlesByBuildDate(int pageCurrent, int pageSize);

    /**
     * 修改帖子的阅读量
     * @param article
     * @return
     */
    int modifyArticleClickNumber(Article article);

    /**
     * 修改帖子的评论量
     * @param article
     * @return
     */
    int modifyArticleCommentNumber(Article article);

    /**
     * 获取本周热议内容
     *
     * @param pageCurrent
     * @param pageSize
     * @return
     */
    List<Article> getArticlesByCommentNumber(int pageCurrent, int pageSize);

    /**
     * 获取没有解决的问题
     *
     * @param pageCurrent
     * @param pageSize
     * @return
     */
    List<Article> getArticlesByUnsolved(int pageCurrent, int pageSize);

    /**
     * 获取帖子的总数量
     * @return
     */
    int getArticleCount();

    /**
     * 获取已经结贴的帖子
     * @param pageCurrent
     * @param pageSize
     * @return
     */
    List<Article> getArticlesBySolved(int pageCurrent, int pageSize);

    /**
     * 获取某一类别的帖子
     * @param categoryId
     * @param pageCurrent
     * @param pageSize
     * @return
     */
    List<Article> getArticlesByCategoryId(int categoryId, int pageCurrent, int pageSize);

    /**
     * 获取某一类帖子的数量
     * @param categoryId
     * @return
     */
    int getArticleCountByCategoryId(int categoryId);

    /**
     * 获取帖子的数量，判断条件为是否解决、结贴
     * @param solved 判断条件 0 未解决，未结贴
     * @return
     */
    int getArticleCountBySolved(int solved);

    /**
     * 多条件查询
     * @param article
     * @param pageCurrent
     * @param pageSize
     * @return
     */
    List<Article> getArticlesByMany(Article article, int pageCurrent, int pageSize);

    /**
     * 查询符合条件的条数
     * @param article
     * @return
     */
    int getArticleCountByMany(Article article);

    /**
     * 修改帖子
     * @param article
     * @return
     */
    int modifyArticleByArticleId(Article article);
}
